package com.ai.zhly.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.ai.dmc.index.common.bean.AreaBean;
import com.ai.dmc.index.common.exception.BusinessException;
import com.ai.frame.bean.InputObject;
import com.ai.frame.bean.OutputObject;

import net.sf.json.JSONArray;

/**
* @Title: ISceneMonitorService.java
* @Description: 家装宽度展示层---接口
* @author xueyf3  
* @date 2016年5月23日 下午4:18:41
* Copyright：Copyright (c) 2016
* Company：北京亚信智慧数据科技有限公司
* @version V1.0
 */
public interface ICommonService {
	
	/**
	 * 
	 * @Description : 查询所有地域信息，没有数据权限验证，不能直接访问
	 * 
	 * @return Map<String, List<AreaBean>>
	 * 
	 * @author : wucm
	 * @date : 2015年7月27日 上午10:24:52
	 * 
	 */
	Map<String, List<AreaBean>> _queryArea_();
	
	/**
	 * 
	 * @Description : 数据格式转换：地市信息转换
	 * 
	 * @return JSONArray
	 * 
	 * @author : wucm
	 * @date : 2015年11月11日 下午4:49:38
	 * 
	 */
	public JSONArray changeAreaMapToJson(List<AreaBean> areaList);
	
	/**
	 * 
	 * @Description : 查询所有地域信息，没有数据权限验证
	 * 
	 * @return Map<String, List<AreaBean>>
	 * 
	 * @author : wucm
	 * @date : 2015年7月27日 上午10:24:52
	 * 
	 */
	public Map<String, List<AreaBean>> queryArea();
	
	/**
	 * 
	 * @Description : 查询用户拥有权限的所有地域信息(没有数据权限不被过滤掉，只是将hasRight置为false)
	 * 
	 *              用途：用于前台展示
	 * 
	 * @param userId
	 * @return Map<String,List<AreaBean>>
	 * 
	 * @author : wucm
	 * @date : 2015年8月24日 下午2:27:28
	 * 
	 */
	public Map<String, List<AreaBean>> queryAreaAllForUser(String userId);
	
	/**
	 * 
	 * @Description : 查询全量地市，不做数据权限校验
	 * @return
	 * @return List<AreaBean>
	 * 
	 * @author : wucm
	 * @date : 2015年7月27日 上午11:28:14
	 * 
	 */
	public List<AreaBean> queryAreaCity();
	
	/**
	 * 
	 * @Description : 查询全量地市，但是判断用户是否具有数据权限
	 * @param userId
	 * @return
	 * @return List<AreaBean>
	 * 
	 * @author : wucm
	 * @date : 2015年7月27日 上午11:28:14
	 * 
	 */
	public void queryAreaCityForUser(InputObject inputObject, OutputObject outputObject) throws BusinessException;
	
	/**
	 * 
	 * @Description : 查询用户拥有权限的所有地域信息(没有数据权限的被过滤掉)(用途：用于前台展示)
	 * 
	 * @param userId
	 * @return Map<String,List<AreaBean>>
	 * 
	 * @author : wucm
	 * @date : 2015年8月24日 下午2:27:28
	 * 
	 */
	public Map<String, List<AreaBean>> queryAreaForUser(String userId);
	
	/**
	 * 
	 * @Description : 查询用户拥有权限的所有地域信息(没有数据权限的被过滤掉)(用途：用于权限验证)
	 * 
	 * @param userId
	 * @return Map<String,List<AreaBean>>
	 * 
	 * @author : wucm
	 * @date : 2015年8月24日 下午2:27:28
	 * 
	 */
	public Map<String, Map<String, String>> queryAreaIdForUser(String userId);
	
	/**
	 * 
	 * @Description : 查询所有地域信息，没有数据权限验证
	 * 
	 * @return Map<String, List<AreaBean>>
	 * 
	 * @author : wucm
	 * @date : 2015年7月27日 上午10:24:52
	 * 
	 */
	public Map<String, Map<String, AreaBean>> queryAreaMap();
	
	/**
	 * 
	 * @Description : 查询地市树
	 * 
	 * @return JSONArray
	 * 
	 * @author : wucm
	 * @date : 2015年11月13日 下午2:38:00
	 * 
	 */
	public JSONArray queryAreaTree(String userAreaId, Boolean isAdmin);
	
	/**
	 * 
	 * @Description : 查询地市树
	 * @return
	 * @return JSONArray
	 * 
	 * @author : wucm
	 * @param areaId
	 * @param isAdmin
	 * @param userId
	 * @date : 2015年8月11日 下午5:09:57
	 * 
	 */
	public JSONArray queryAreaTree(String userId, Boolean isAdmin,
			String areaId);
	
	/**
	 * 
	 * @Description : 查询数据刷新时间
	 * @param regionId
	 * @return
	 * @return JSONArray
	 * 
	 * @author : wucm
	 * @param warnDB
	 * @date : 2015年7月7日 下午4:17:41
	 * 
	 */
	public Map<String, String> queryDataTime();
	
	/**
	 * 
	 * @Description : 查询用户的所有功能编码
	 * @return
	 * @return JSONArray
	 * 
	 * @author : wucm
	 * @date : 2015年8月11日 下午5:09:57
	 * 
	 */
	public Set<String> queryFuncIdAllByUser(String userId);
	
	/**
	 * 
	 * @Description : 查询用户的数据权限
	 * @param userId
	 * @return
	 * @return Map<String,List<String>>
	 * 
	 * @author : wucm
	 * @date : 2015年8月24日 下午5:10:47
	 * 
	 */
	public Map<String, List<String>> queryUserScope(String userId);
    
	
	/**
	 * 
	 * @Description : 查询所有地市区域
	 * @return void
	 * 
	 * @author : wucm
	 * @date : 2015年6月30日 下午4:00:34
	 * 
	 */
	public void queryCityRegionAll(InputObject inputObject, OutputObject outputObject) throws BusinessException;
	
	/**
	 * 
	 * @Description : 查询首页导航
	 * @param userId
	 * @param isAdmin
	 * @return
	 * @return JSONObject
	 * 
	 * @author : wucm
	 * @date : 2015年10月13日 下午5:59:37
	 * 
	 */
	public void queryIndexNav(InputObject inputObject, OutputObject outputObject) throws BusinessException;
}
